home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 77 / 077.d81 / shove it (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1990-01-01  |  10.7 KB  |  314 lines

  1. 10 ifl=0thenl=1:load"s.fnt",8,1
  2. 20 poke52,128:poke56,128:clr:l=1
  3. 30 poke56578,peek(56578)or3:poke56576,(peek(56576)and252)or1:poke53272,16
  4. 40 poke648,132:poke53269,0:poke53280,14:poke53281,0:print"[154][147]";
  5. 50 diml1,l2,i,j,b(35),s(35)
  6. 70 gosub6000
  7. 80 gosub950
  8. 90 fori=0to34:readb(i),s(i):next
  9. 100 readl1,l2
  10. 105 print"[159][\\\\\\\\\\][157][157][157][157][157][157][157][157][157][157][157][157]^[155]score[159]....._ [159]";
  11. 110 print"[157][157][157][157][157][157][157][157][157][157][157][157][157]/::::::::::; [159]";
  12. 112 print"[157][157][157][157][157][157][157][157][157][157][157][157]            [159]"
  13. 115 print"[159][\\\\\\\\\\\\][\\\\\\\\\\\\]"
  14. 120 print"^..[155]problem[159]..._ [159]^..[155]solution[159].._ [159]"
  15. 125 print"[159][198]\\\\\\\\\\\\[199] [159][198]\\\\\\\\\\\\[199] [159]"
  16. 130 i=15:ifb(26)=10theni=12
  17. 135 forj=1toi:print"^............_ [159]^............_ [159]":next
  18. 140 print"/::::::::::::; [159]/::::::::::::; [159]"
  19. 145 print"                            [159]";
  20. 180 r=1:fori=0to34:gosub1010:next
  21. 190 r=0:fori=0to34:gosub1010:next
  22. 200 rem main loop
  23. 205 m$=str$(m):m$=mid$(m$,2,len(m$)-1):m$=right$("....."+m$,5)
  24. 209 print"";m$;
  25. 210 ifq=0then216
  26. 211 ifjj=0thenreadjj
  27. 212 a=jj:jj=int(jj/10):a=a-int(jj*10)
  28. 213 geta$:ifa$<>chr$(135)then225
  29. 214 geta$:ifa$<>chr$(133)then214
  30. 215 goto225
  31. 216 geta$:ifa$=""then280
  32. 220 a=asc(a$)
  33. 225 if(a=145)or(a=1)or(a=85)then410
  34. 230 if(a=17)or(a=2)or(a=68)then510
  35. 240 if(a=29)or(a=4)or(a=82)then610
  36. 250 if(a=157)or(a=3)or(a=76)then710
  37. 260 if(a=136)or(a=5)or(a=83)then810
  38. 265 ifa=133then910
  39. 266 ifa=134thenprint"[154][147]";:gosub6400:goto80
  40. 270 goto210
  41. 280 a=peek(56320)and31:ifa=31then210
  42. 290 a=31-a:ifaand1then410
  43. 300 ifaand2then510
  44. 310 ifaand4then710
  45. 320 ifaand8then610
  46. 330 ifaand16then810
  47. 340 goto210
  48. 400 rem move up
  49. 410 onb(l1-5)+1goto415,420,210,425,430,435,210,210,440,445,210
  50. 415 i=l1:l1=l2:l2=i:gosub1010:i=l1:gosub1010:goto210
  51. 420 b(l1)=1:b(l1-5)=0:i=l1:gosub1010:l1=l1-5:i=l1:goto2010
  52. 425 b(l1)=3:b(l1-5)=2:b(l1-10)=0:i=l1:gosub1010:i=l1-5:gosub1010:l1=l1-10
  53. 426 i=l1:goto2010
  54. 430 ifl2<>l1+1then210
  55. 431 b(l1)=b(l1-5):b(l2)=b(l2-5):b(l1-5)=0:b(l2-5)=0:i=l1:gosub1010:i=l2
  56. 432 gosub1010:l1=l1-5:l2=l2-5:i=l2:gosub1010:i=l1:goto2010
  57. 435 ifl2<>l1-1then210
  58. 436 goto431
  59. 440 ifl2<>l1+1then210
  60. 441 b(l1)=b(l1-5):b(l1-5)=b(l1-10):b(l1-10)=0:b(l2)=b(l2-5):b(l2-5)=b(l2-10)
  61. 442 b(l2-10)=0:i=l2:gosub1010:i=l2-5:gosub1010:l2=l2-10:i=l2:gosub1010
  62. 443 i=l1:gosub1010:i=l1-5:gosub1010:l1=l1-10:i=l1:goto2010
  63. 445 ifl2<>l1-1then210
  64. 446 goto441
  65. 500 rem move down
  66. 510 onb(l1+5)+1goto515,520,525,210,530,535,540,545,210,210,210
  67. 515 i=l1:l1=l2:l2=i:gosub1010:i=l1:gosub1010:goto210
  68. 520 b(l1)=1:b(l1+5)=0:i=l1:gosub1010:l1=l1+5:i=l1:goto2010
  69. 525 b(l1)=2:b(l1+5)=3:b(l1+10)=0:i=l1:gosub1010:i=l1+5:gosub1010:l1=l1+10
  70. 526 i=l1:goto2010
  71. 530 ifl2<>l1+1then210
  72. 531 b(l1)=b(l1+5):b(l2)=b(l2+5):b(l1+5)=0:b(l2+5)=0:i=l1:gosub1010:i=l2
  73. 532 gosub1010:l1=l1+5:l2=l2+5:i=l2:gosub1010:i=l1:goto2010
  74. 535 ifl2<>l1-1then210
  75. 536 goto531
  76. 540 ifl2<>l1+1then210
  77. 541 b(l1)=b(l1+5):b(l1+5)=b(l1+10):b(l1+10)=0:b(l2)=b(l2+5):b(l2+5)=b(l2+10)
  78. 542 b(l2+10)=0:i=l2:gosub1010:i=l2+5:gosub1010:l2=l2+10:i=l2:gosub1010
  79. 543 i=l1:gosub1010:i=l1+5:gosub1010:l1=l1+10:i=l1:goto2010
  80. 545 ifl2<>l1-1then210
  81. 546 goto541
  82. 600 rem move right
  83. 610 onb(l1+1)+1goto615,620,625,630,635,210,640,210,645,210,210
  84. 615 i=l1:l1=l2:l2=i:gosub1010:i=l1:gosub1010:goto210
  85. 620 b(l1)=1:b(l1+1)=0:i=l1:gosub1010:l1=l1+1:i=l1:goto2010
  86. 625 ifl2<>l1+5then210
  87. 626 b(l1)=b(l1+1):b(l2)=b(l2+1):b(l1+1)=0:b(l2+1)=0:l1=l1+1:l2=l2+1:i=l2
  88. 627 gosub1010:i=l2-1:gosub1010:i=l1-1:gosub1010:i=l1:goto2010
  89. 630 ifl2<>l1-5then210
  90. 631 goto626
  91. 635 b(l1)=4:b(l1+1)=5:b(l1+2)=0:l1=l1+2:i=l1-2:gosub1010:i=l1-1:gosub1010
  92. 636 i=l1:goto2010
  93. 640 ifl2<>l1+5then210
  94. 641 b(l1)=b(l1+1):b(l1+1)=b(l1+2):b(l1+2)=0:b(l2)=b(l2+1):b(l2+1)=b(l2+2)
  95. 642 b(l2+2)=0:l2=l2+2:l1=l1+2:i=l2:gosub1010:i=l2-1:gosub1010:i=l2-2:gosub1010
  96. 643 i=l1-2:gosub1010:i=l1-1:gosub1010:i=l1:goto2010
  97. 645 ifl2<>l1-5then210
  98. 646 goto641
  99. 700 rem move left
  100. 710 onb(l1-1)+1goto715,720,725,730,210,735,210,740,210,745,210
  101. 715 i=l1:l1=l2:l2=i:gosub1010:i=l1:gosub1010:goto210
  102. 720 b(l1)=1:b(l1-1)=0:i=l1:gosub1010:l1=l1-1:i=l1:goto2010
  103. 725 ifl2<>l1+5then210
  104. 726 b(l1)=b(l1-1):b(l2)=b(l2-1):b(l1-1)=0:b(l2-1)=0:l1=l1-1:l2=l2-1:i=l2
  105. 727 gosub1010:i=l2+1:gosub1010:i=l1+1:gosub1010:i=l1:goto2010
  106. 730 ifl2<>l1-5then210
  107. 731 goto726
  108. 735 b(l1)=5:b(l1-1)=4:b(l1-2)=0:l1=l1-2:i=l1+2:gosub1010:i=l1+1:gosub1010
  109. 736 i=l1:goto2010
  110. 740 ifl2<>l1+5then210
  111. 741 b(l1)=b(l1-1):b(l1-1)=b(l1-2):b(l1-2)=0:b(l2)=b(l2-1):b(l2-1)=b(l2-2)
  112. 742 b(l2-2)=0:l2=l2-2:l1=l1-2:i=l2:gosub1010:i=l2+1:gosub1010:i=l2+2:gosub1010
  113. 743 i=l1+2:gosub1010:i=l1+1:gosub1010:i=l1:goto2010
  114. 745 ifl2<>l1-5then210
  115. 746 goto741
  116. 800 rem switch holes
  117. 810 i=l1:l1=l2:l2=i:gosub1010:i=l1:gosub1010:goto210
  118. 900 rem see solution
  119. 910 gosub950:fori=0to34:readb(i),s(i):next:readl1,l2:fori=0to29:gosub1000:next
  120. 920 q=1:goto210
  121. 950 rem find problem
  122. 960 restore:ifpn=0thenreturn
  123. 970 fori=1topn
  124. 975 readj:ifj>=0then975
  125. 980 next:return
  126. 1000 rem draw square i
  127. 1010 y=int(i/5):x=i-5*y:x=x*3+20*r:y=y*3+6
  128. 1020 printleft$("",y);tab(x);:b=b(i):ifrthenb=s(i)
  129. 1030 onb+1goto1040,1050,1060,1070,1080,1090,1110,1120,1130,1140,1150
  130. 1040 ifi=l1then1160
  131. 1045 print"...[157][157][157]...[157][157][157]...";:return
  132. 1050 print"[158]![197]#[157][157][157]$%&[157][157][157]'()";:return
  133. 1060 print"![197]#[157][157][157]$%&[157][157][157]$%&";:return
  134. 1070 print"$%&[157][157][157]$%&[157][157][157]'()";:return
  135. 1080 print"![197][197][157][157][157]$%%[157][157][157]'((";:return
  136. 1090 print"[197][197]#[157][157][157]%%&[157][157][157](()";:return
  137. 1110 print"![197][197][157][157][157]$%%[157][157][157]$%%";:return
  138. 1120 print"[197][197]#[157][157][157]%%&[157][157][157]%%&";:return
  139. 1130 print"$%%[157][157][157]$%%[157][157][157]'((";:return
  140. 1140 print"%%&[157][157][157]%%&[157][157][157](()";:return
  141. 1150 return
  142. 1160 onb(l1-5)+1goto1180,1180,1200,1180,1170,1190,1200,1200,1170,1190,1200
  143. 1170 ifl2<>l1+1then1200
  144. 1180 print".*.[157][157][157]";:goto1210
  145. 1190 ifl2=l1-1then1180
  146. 1200 print"...[157][157][157]";
  147. 1210 onb(l1-1)+1goto1230,1230,1240,1220,1250,1230,1250,1240,1250,1220,1250
  148. 1220 ifl2<>l1-5then1250
  149. 1230 print"+.";:goto1260
  150. 1240 ifl2=l1+5then1230
  151. 1250 print"..";
  152. 1260 onb(l1+1)+1goto1280,1280,1290,1270,1280,1300,1290,1300,1270,1300,1300
  153. 1270 ifl2<>l1-5then1300
  154. 1280 print",[157][157][157]";:goto1310
  155. 1290 ifl2=l1+5then1280
  156. 1300 print".[157][157][157]";
  157. 1310 onb(l1+5)+1goto1330,1330,1330,1350,1340,1320,1340,1320,1350,1350,1350
  158. 1320 ifl2<>l1-1then1350
  159. 1330 print".-.";:return
  160. 1340 ifl2=l1+1then1330
  161. 1350 print"...";:return
  162. 2000 rem check board
  163. 2010 gosub1010:j=0:fori=0to29:j=j+(b(i)<>s(i)):next:m=m+1:ifjthen205
  164. 2015 fori=1to5:gosub6300:next
  165. 2020 print"[154][147][159][\\\\\\\\\\\\\\\\\\\\]"
  166. 2030 ifqthenprint"^that.was.not.so.hard[159]_ [159]":goto2050
  167. 2040 print"^.....you.did.it.....[159]_ [159]"
  168. 2050 print"[159]/::::::::::::::::::::; [159]"
  169. 2055 print"                      [159]"
  170. 2060 gosub6400:goto80
  171. 3000 rem restore font, pointers
  172. 3010 poke56578,peek(56578)or3:poke56576,peek(56576)or3:poke53272,20
  173. 3020 poke648,4:poke53280,14:poke53281,6:print"[154][147]";:return
  174. 4000 rem problem 1
  175. 4010 data10,10,10,10,10,10,10,10,10,10
  176. 4020 data10,10, 1, 1, 4, 1, 5, 0, 1, 1
  177. 4030 data10,10, 1, 2, 6, 6, 7, 7, 2, 0
  178. 4040 data10,10, 0, 3, 8, 8, 9, 9, 3, 1
  179. 4050 data10,10, 1, 1, 0, 4, 1, 5, 1, 1
  180. 4060 data10,10,10,10,10,10,10,10,10,10
  181. 4070 data10,10,10,10,10,10,10,10,10,10
  182. 4080 data16,22
  183. 4090 data33241351,41513225,32452324
  184. 4100 data45111541,22544452,11533225
  185. 4110 data22544451,15133533,25241351
  186. 4120 data41133254,4,-1
  187. 4500 rem problem 2
  188. 4510 data10,10,10,10,10,10,10,10,10,10
  189. 4520 data10,10, 6, 1, 7, 0, 2, 1, 1, 1
  190. 4530 data10,10, 8, 0, 9, 1, 3, 4, 1, 5
  191. 4540 data10,10, 4, 1, 5, 2, 1, 6, 0, 7
  192. 4550 data10,10, 1, 1, 1, 3, 0, 8, 1, 9
  193. 4560 data10,10,10,10,10,10,10,10,10,10
  194. 4570 data10,10,10,10,10,10,10,10,10,10
  195. 4580 data19,23
  196. 4590 data14511515,225423,13235332
  197. 4600 data25244544,11513535,54445245
  198. 4610 data35222532,45113353,35222544
  199. 4620 data54115113,25241544,35332452
  200. 4630 data54441515,35331442,22452223
  201. 4640 data45115113,-1
  202. 5000 rem problem 3
  203. 5010 data10,10,10,10,10,10,10,10,10,10
  204. 5020 data10,10, 4, 1, 5, 2, 4, 0, 5, 1
  205. 5030 data10,10, 1, 2, 4, 3, 5, 1, 2, 0
  206. 5040 data10,10, 0, 3, 1, 4, 2, 5, 3, 1
  207. 5050 data10,10, 1, 4, 0, 5, 3, 4, 1, 5
  208. 5060 data10,10,10,10,10,10,10,10,10,10
  209. 5070 data10,10,10,10,10,10,10,10,10,10
  210. 5080 data16,22
  211. 5090 data35135241,24524111,54423523
  212. 5100 data35151144,22522235,33145145
  213. 5110 data52241335,13513224,44524411
  214. 5120 data54235232,13353314,25424451
  215. 5130 data42313532,14545231,13241351
  216. 5140 data25132353,45445,-1
  217. 5500 rem problem 4
  218. 5510 data10,10,10,10,10,10,10,10,10,10
  219. 5520 data10,10, 2, 1, 6, 1, 7, 1, 2, 1
  220. 5530 data10,10, 3, 1, 8, 0, 9, 0, 3, 1
  221. 5540 data10,10, 4, 4, 5, 5, 4, 4, 5, 5
  222. 5550 data10,10, 1, 2, 0, 6, 0, 7, 1, 2
  223. 5560 data10,10, 1, 3, 1, 8, 1, 9, 1, 3
  224. 5570 data10,10,10,10,10,10,10,10,10,10
  225. 5580 data22,23
  226. 5590 data52241353,33533224,44524411
  227. 5600 data25231514,33142245,33254413
  228. 5610 data22413225,45113132,14252245
  229. 5620 data41151133,13252254,14422533
  230. 5630 data35331445,24454413,53245225
  231. 5640 data11132533,22454515,33254235
  232. 5650 data15113225,44524451,42335332
  233. 5660 data33111451,42233115,51324454
  234. 5670 data24411132,22522445,41335335
  235. 5680 data33144514,44522335,22311541
  236. 5690 data53142335,52245411,13352522
  237. 5700 data14525415,42525233,33514514
  238. 5710 data45222315,41151132,25332545
  239. 5720 data42241132,35322445,4541,-1
  240. 6000 rem title screen
  241. 6010 a1$="...[157][157][157]by.[157][157][157]pub[157][157][157][145][145]":a2$="...[157][157][157]dav[157][157][157]lis[157][157][157][145][145]"
  242. 6020 a3$="..s[157][157][157]e.j[157][157][157]hed[157][157][157][145][145]":a4$="hov[157][157][157]oha[157][157][157].on[157][157][157][145][145]"
  243. 6030 a5$="e.i[157][157][157]nns[157][157][157].lo[157][157][157][145][145]":a6$="t..[157][157][157]en.[157][157][157]ads[157][157][157][145][145]"
  244. 6040 a7$="...[157][157][157]@.1[157][157][157]tar[157][157][157][145][145]":a8$="...[157][157][157]989[157][157][157].77[157][157][157][145][145]":rem loadstar #
  245. 6050 b1$="...[157][157][157]...[157][157][157]all[157][157][157][145][145]":b2$="sub[157][157][157]1.8[157][157][157].ri[157][157][157][145][145]"
  246. 6060 b3$="scr[157][157][157]00.[157][157][157]ght[157][157][157][145][145]":b4$="ipt[157][157][157]831[157][157][157]s.r[157][157][157][145][145]"
  247. 6070 b5$="ion[157][157][157].26[157][157][157]ese[157][157][157][145][145]":b6$="s..[157][157][157]94.[157][157][157]rve[157][157][157][145][145]"
  248. 6080 b7$="...[157][157][157]...[157][157][157]d..[157][157][157][145][145]":b8$="<=>[157][157][157]?[192][193][157][157][157][194][195][196][157][157][157][145][145]"
  249. 6090 u$="[145][145][145]":d$="":l$="[157][157][157]":r$="":x$="...[157][157][157]...[157][157][157]...[157][157][157][145][145]"
  250. 6100 print"[154][147][159][\\\\\\\\\\\\\\\\\\\\\\\\\\]"
  251. 6110 fori=1to6:print"^.........................._ [159]":next
  252. 6120 print"/::::::::::::::::::::::::::; [159]"
  253. 6125 print"                            [159]":print"";
  254. 6130 printb1$;r$;x$;r$;a2$;r$;b5$;r$;b4$;r$;a5$;r$;b6$;r$;a7$;d$;
  255. 6140 printa8$;l$;a6$;l$;b7$;l$;a4$;l$;b3$;l$;a3$;l$;a1$;l$;b2$;
  256. 6145 fori=1to5:gosub6300:next
  257. 6150 gosub6300:printr$;x$;u$;a1$;:gosub6300:printd$;l$;x$;r$;b2$;
  258. 6160 gosub6300:printl$;u$;x$;d$;b1$;:gosub6300:printu$;r$;x$;l$;a1$;
  259. 6170 gosub6300:printr$;r$;x$;l$;a2$;:gosub6300:printr$;d$;x$;u$;a3$;
  260. 6180 gosub6300:printd$;r$;x$;l$;b3$;:gosub6300:printr$;r$;x$;l$;a4$;
  261. 6190 gosub6300:printr$;u$;x$;d$;b4$;:gosub6300:printu$;l$;x$;r$;b5$;
  262. 6200 gosub6300:printl$;d$;x$;u$;a4$;:gosub6300:printd$;r$;x$;l$;b4$;
  263. 6210 gosub6300:printr$;u$;x$;d$;b5$;:gosub6300:printu$;r$;x$;l$;a5$;
  264. 6220 gosub6300:printr$;r$;x$;l$;b6$;:gosub6300:printr$;d$;x$;u$;a6$;
  265. 6230 gosub6300:printd$;l$;x$;r$;b7$;:gosub6300:printl$;u$;x$;d$;b6$;
  266. 6240 gosub6300:printu$;r$;x$;l$;a6$;:gosub6300:printr$;r$;x$;l$;a7$;
  267. 6250 gosub6300:printr$;d$;x$;u$;a8$;:gosub6300:printd$;b8$;
  268. 6260 fori=1to5:gosub6300:next:goto6400
  269. 6300 forj=1to400:next:return
  270. 6400 rem choose problem
  271. 6410 print"";
  272. 6420 print"[159][\\\\\\\\\\\\\\\\\\]"
  273. 6430 print"[159]^.1,.problem.1[159]....._ [159]"
  274. 6440 print"[159]^.2,.problem.2[159]....._ [159]"
  275. 6450 print"[159]^.3,.problem.3[159]....._ [159]"
  276. 6460 print"[159]^.4,.problem.4[159]....._ [159]"
  277. 6470 print"[159]^.5,.instructions[159].._ [159]"
  278. 6480 print"[159]^.6,.loadstar...[159]..._ [159]"
  279. 6490 print"[159]^.................._ [159]"
  280. 6500 print"[159]^.[158]enter.selection[159].._ [159]"
  281. 6510 print"[159]/::::::::::::::::::; [159]"
  282. 6515 print"                    [159]"
  283. 6520 geta$:ifa$=""then6520
  284. 6530 a=asc(a$)-49:ifa<0ora>5then6520
  285. 6540 ifa<4thenpn=a:print"[154][147]";:q=0:m=0:return
  286. 6550 ifa=4then6605
  287. 6555 gosub3000
  288. 6560 open15,8,15,"r0:hello connect=hello connect":input#15,er%:close15
  289. 6570 ifer%<>63thenend
  290. 6580 load"hello connect",8
  291. 6600 rem intro text
  292. 6605 print"[154][147][159]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\";
  293. 6606 print"........................................";
  294. 6610 print"[150].move.the.blocks.in.the.problem.grid.to.";
  295. 6620 print"...match.the.solution.grid..............";
  296. 6630 print".move.the.open.square.using.the.cursor..";
  297. 6640 print"...keys.or.the.joystick.................";
  298. 6650 print".the.arrows.in.the.open.square.show.the.";
  299. 6660 print"...possible.moves.......................";
  300. 6670 print".f7.or.the.fire.button.swaps.the.two....";
  301. 6680 print"...open.squares.........................";
  302. 6690 print".f1.shows.one.possible.answer...........";
  303. 6700 print".while.the.answer.is.being.shown..f5....";
  304. 6710 print"...will.pause.the.display.and.f1.will...";
  305. 6715 print"...resume...............................";
  306. 6720 print".f3.will.quit...........................";
  307. 6730 print"........................................";
  308. 6740 print".......[158]press.any.key.to.continue........";
  309. 6745 print"........................................";
  310. 6750 print"[159]::::::::::::::::::::::::::::::::::::::::";
  311. 6760 geta$:ifa$=""then6760
  312. 6770 print"[154][147]";:goto6410
  313. 10000 open15,8,15,"s0:shove it":close15:save"shove it",8:end
  314.